#ifndef	__LIST_H
#define	__LIST_H

#include <stdbool.h>

// 数据类型设计
typedef  struct Data
{
	char FilePath [512];
	char Type ; // .c  .jpg .mp3
	char Name[128];
	double Price ;
	int FileSize ;

	//.....

} dataType ;


// 节点设计
typedef struct Node
{
	dataType Data ;

	// 指针域
	struct Node * Next , * Prev ;

}Node_t , *P_Node_t ;


P_Node_t InitNewNode( dataType * NewData );
void Add2ListHead( P_Node_t head ,  P_Node_t newNode );
void Add2ListTail( P_Node_t head , P_Node_t newNode );
void Add2List( P_Node_t Prev , P_Node_t New  , P_Node_t Next );
void displayList( P_Node_t head , void (* Printer)(dataType *)  );
P_Node_t findNode( P_Node_t head , dataType data  , 
		bool (*Comparator)(dataType * , dataType *) );
void del4List( P_Node_t del );
void delData4List( P_Node_t Prev , P_Node_t del ,  P_Node_t Next );
void Destruction( P_Node_t head  , P_Node_t tmp );
void myprintf(P_Node_t head);


#endif